home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 December / Australian PC User - December 2003 (CD2).iso / software / apps / files / dwmx2k4.exe / Disk1 / data1.cab / Configuration_En / Objects / Server / DynamicTable.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  10.4 KB  |  385 lines

  1. // Copyright 2001, 2002, 2003 Macromedia, Inc. All rights reserved.
  2.  
  3. // *************** GLOBALS VARS *****************
  4.  
  5. var HELP_DOC = MM.HELP_objDynamicTable;
  6.  
  7. var PREF_SECTION = "Extensions\\Objects\\Dynamic Table";
  8.  
  9. var PREF_KEY_SHOW     = "Show";
  10. var PREF_DEFAULT_SHOW = 10;
  11.  
  12. var PREF_KEY_BORDER     = "Border";
  13. var PREF_DEFAULT_BORDER = 1;
  14.  
  15. var PREF_KEY_CELLPADDING     = "Cell Padding";
  16. var PREF_DEFAULT_CELLPADDING = "";
  17.  
  18. var PREF_KEY_CELLSPACING     = "Cell Spacing";
  19. var PREF_DEFAULT_CELLSPACING = "";
  20.  
  21.  
  22. // global form elements
  23. var _Recordset = new ListMenu("Dynamic Table.htm", "Recordset", "");
  24. var _Show = new NumRecButtons("Dynamic Table.htm", "Show", "");
  25. var _Border = new TextField("Dynamic Table.htm", "Border", "");
  26. var _Cell__Padding = new TextField("Dynamic Table.htm", "Cell__Padding", "");
  27. var _Cell__Spacing = new TextField("Dynamic Table.htm", "Cell__Spacing", "");
  28.  
  29.  
  30.  
  31. // ******************* API **********************
  32.  
  33. //--------------------------------------------------------------------
  34. // FUNCTION:
  35. //   insertObject
  36. //
  37. // DESCRIPTION:
  38. //   inserts the appropriate html into the document head and document body
  39. //
  40. // ARGUMENTS:
  41. //   none
  42. //
  43. // RETURNS:
  44. //   string - empty upon success, or an error message if not successful.
  45. //            if a string is returned, then that string is alerted when the
  46. //            user clicks the "OK" button
  47. //--------------------------------------------------------------------
  48. function insertObject()
  49. {
  50.   var errStr = "";
  51.   var rsName = _Recordset.getValue();
  52.   var fieldNames = dwscripts.getFieldNames(rsName);
  53.   var numRecs = _Show.getValue(); // equals "all" or an integer
  54.   var border = _Border.getValue();
  55.   var cellPadding = _Cell__Padding.getValue();
  56.   var cellSpacing = _Cell__Spacing.getValue();
  57.   
  58.   if (!errStr)
  59.   {
  60.     errStr = _Show.applyServerBehavior("",new Object());
  61.   }
  62.   
  63.   if (!errStr)
  64.   {
  65.     var isAll = (numRecs == "all");
  66.     errStr = dwscripts.canInsertPageNavDisplay(rsName, true, isAll);
  67.   }
  68.   
  69.   if (!errStr)
  70.   {
  71.     if (!isBlankOrZeroOrAPositiveInteger(border))
  72.       errStr = dwscripts.sprintf(MM.MSG_NeedBlankOrNumberZeroOrGreater,MM.LABEL_Border);
  73.   }
  74.   
  75.   if (!errStr)
  76.   {
  77.     if (!isBlankOrZeroOrAPositiveInteger(cellPadding))
  78.       errStr = dwscripts.sprintf(MM.MSG_NeedBlankOrNumberZeroOrGreater,MM.LABEL_CellPadding);
  79.   }
  80.   
  81.   if (!errStr)
  82.   {
  83.     if (!isBlankOrZeroOrAPositiveInteger(cellSpacing))
  84.       errStr = dwscripts.sprintf(MM.MSG_NeedBlankOrNumberZeroOrGreater,MM.LABEL_CellSpacing);
  85.   }
  86.   
  87.   
  88.   if (!errStr)
  89.   {
  90.     var paramObj = new Object();
  91.     paramObj.RecordsetName = rsName;
  92.     paramObj.PageSize = (numRecs == "all")?"":numRecs;
  93.     paramObj.Border = border;
  94.     paramObj.CellPadding = cellPadding;
  95.     paramObj.CellSpacing = cellSpacing;
  96.     paramObj.FieldNameArray = fieldNames;
  97.     
  98.     
  99.     // Set parameters to support the older Server Models
  100.     paramObj.rsName = paramObj.RecordsetName;
  101.     paramObj.loopName = createUniqueRepeatedRegionName();
  102.     paramObj.numRows = (paramObj.PageSize) ? paramObj.PageSize : -1;
  103.  
  104.  
  105.     // Set the page size on the recordset, if the function
  106.     //  setPageSize is defined
  107.     var sbRecordset = dwscripts.getServerBehaviorByParam("Recordset.htm","RecordsetName",paramObj["RecordsetName"]);
  108.     if (sbRecordset && sbRecordset.setPageSize != null)
  109.     {
  110.       var newRS = sbRecordset.makeEditableCopy();
  111.       newRS.setPageSize(paramObj.PageSize);
  112.       newRS.queueDocEdits();
  113.     }
  114.     
  115.     // fix up the selection for table insert
  116.     if (!dwscripts.selectionIsInBody())
  117.     {
  118.       dwscripts.setCursorToEndOfBody();
  119.     }
  120.     dwscripts.setCursorOutsideParagraph();
  121.     dwscripts.adjustCursorForEmptyTableCell();
  122.  
  123.  
  124.         // Apply the group file to the page
  125.     dwscripts.applyGroup("DynamicTable", paramObj);
  126.     
  127.     
  128.     // Save the dialog preferences
  129.     savePreferences();
  130.   }
  131.   
  132.  
  133.   return errStr;
  134. }
  135.  
  136.  
  137. //--------------------------------------------------------------------
  138. // FUNCTION:
  139. //   getSetupSteps
  140. //
  141. // DESCRIPTION:
  142. //   Returns an array of steps to be displayed in an instructions
  143. //   dialog.  The first element of the array is the text that appears
  144. //   above the list.  The remaining elements are the steps, which will
  145. //   be rendered in a numbered list.
  146. //
  147. //   The steps are each HTML, which may contain JavaScript event
  148. //   handlers.  The event handlers can either be a JavaScript script
  149. //   or an "event:KeyWord" syntax.  If the latter is used, then the
  150. //   handler for KeyWord is implemented internally in the Dreamweaver
  151. //   executable.
  152. //
  153. // ARGUMENTS:
  154. //   none
  155. //
  156. // RETURNS:
  157. //   the array described above
  158. //--------------------------------------------------------------------
  159. function getSetupSteps()
  160. {
  161.   return getSetupStepsForServerObject();
  162. }
  163.  
  164.  
  165. //--------------------------------------------------------------------
  166. // FUNCTION:
  167. //   setupStepsCompleted
  168. //
  169. // DESCRIPTION:
  170. //   Returns the number of steps (in the list of steps returned from
  171. //   getSetupSteps) that have already been completed.  This number is
  172. //   used to determine how many steps will have a check mark next to
  173. //   them.
  174. //
  175. // ARGUMENTS:
  176. //   none
  177. //
  178. // RETURNS:
  179. //   An integer - the number of check marks to be displayed, or -1
  180. //   if all steps have been completed.
  181. //--------------------------------------------------------------------
  182. function setupStepsCompleted()
  183. {
  184.   return setupStepsCompletedForServerObject();
  185. }
  186.  
  187.  
  188. //--------------------------------------------------------------------
  189. // FUNCTION:
  190. //   displayHelp
  191. //
  192. // DESCRIPTION:
  193. //   Displays the built-in Dreamweaver help.
  194. //
  195. // ARGUMENTS:
  196. //   none
  197. //
  198. // RETURNS:
  199. //   nothing
  200. //--------------------------------------------------------------------
  201.  
  202. function displayHelp()
  203. {
  204.   // Replace the following call if you are modifying this file for your own use.
  205.   dwscripts.displayDWHelp(HELP_DOC);
  206. }
  207.  
  208.  
  209.  
  210. // ***************** LOCAL FUNCTIONS  ******************
  211.  
  212. //--------------------------------------------------------------------
  213. // FUNCTION:
  214. //   initializeUI
  215. //
  216. // DESCRIPTION:
  217. //   Initializes the form elements and populates them with needed content
  218. //
  219. // ARGUMENTS:
  220. //   none
  221. //
  222. // RETURNS:
  223. //   nothing
  224. //--------------------------------------------------------------------
  225. function initializeUI()
  226. {
  227.   // populate Recordset menu
  228.   var rsNames = dwscripts.getRecordsetNames();
  229.   _Recordset.initializeUI(rsNames, rsNames);
  230.   
  231.   // initialize Num Recs control and textfields
  232.   _Show.initializeUI();
  233.   _Border.initializeUI();
  234.   _Cell__Padding.initializeUI();
  235.   _Cell__Spacing.initializeUI();
  236.   
  237.   // restore Show, Border, Cell Padding, and Cell Spacing values
  238.   _Show.setValue(getPreference("show"));
  239.   _Border.setValue(getPreference("border"));
  240.   _Cell__Padding.setValue(getPreference("cellPadding"));
  241.   _Cell__Spacing.setValue(getPreference("cellSpacing"));
  242.  
  243.   document.forms[0].elements[0].focus();
  244. }
  245.  
  246.  
  247.  
  248. //--------------------------------------------------------------------
  249. // FUNCTION:
  250. //   getPreference
  251. //
  252. // DESCRIPTION:
  253. //   gets the previous repeated region, border, cell padding, and cell spacing values
  254. //
  255. // ARGUMENTS:
  256. //   whichPref - string ("border,"show","cellPadding" and "cellSpacing" are valid)
  257. //     
  258. //
  259. // RETURNS:
  260. //   the last chosen preference, uses default value if no previous preference
  261. //--------------------------------------------------------------------
  262. function getPreference(whichPref)
  263.   var retVal = "";
  264.   var pref = whichPref.toLowerCase();
  265.  
  266.   if (pref == "show")
  267.   {
  268.     retVal = dw.getPreferenceString(PREF_SECTION,PREF_KEY_SHOW,PREF_DEFAULT_SHOW);
  269.   } 
  270.   else if (pref == "border")
  271.   {
  272.     retVal = dw.getPreferenceString(PREF_SECTION,PREF_KEY_BORDER,PREF_DEFAULT_BORDER);
  273.   } 
  274.   else if (pref == "cellpadding")
  275.   {
  276.     retVal = dw.getPreferenceString(PREF_SECTION,PREF_KEY_CELLPADDING,PREF_DEFAULT_CELLPADDING);
  277.   }
  278.   else if (pref == "cellspacing")
  279.   {
  280.     retVal = dw.getPreferenceString(PREF_SECTION,PREF_KEY_CELLSPACING,PREF_DEFAULT_CELLSPACING);
  281.   }
  282.  
  283.   return retVal;
  284. }
  285.  
  286.  
  287. //--------------------------------------------------------------------
  288. // FUNCTION:
  289. //   savePreferences
  290. //
  291. // DESCRIPTION:
  292. //   saves the repeated region, border, cell padding, and cell spacing values
  293. //
  294. // ARGUMENTS:
  295. //   none
  296. //
  297. // RETURNS:
  298. //   nothing
  299. //--------------------------------------------------------------------
  300. function savePreferences()
  301. {
  302.   dw.setPreferenceString(PREF_SECTION,PREF_KEY_SHOW,_Show.getValue());
  303.   dw.setPreferenceString(PREF_SECTION,PREF_KEY_BORDER,_Border.getValue());
  304.   dw.setPreferenceString(PREF_SECTION,PREF_KEY_CELLPADDING,_Cell__Padding.getValue());
  305.   dw.setPreferenceString(PREF_SECTION,PREF_KEY_CELLSPACING,_Cell__Spacing.getValue());
  306. }
  307.  
  308.  
  309. //--------------------------------------------------------------------
  310. // FUNCTION:
  311. //   isBlankOrZeroOrAPositiveInteger
  312. //
  313. // DESCRIPTION:
  314. //   determines if the value is blank or zero or a positive integer.
  315. //   Used for the border, cell padding, and cell spacing checks
  316. //
  317. // ARGUMENTS:
  318. //   theVal -- string or integer
  319. //
  320. // RETURNS:
  321. //   boolean
  322. //--------------------------------------------------------------------
  323. function isBlankOrZeroOrAPositiveInteger(theVal)
  324. {
  325.   var retVal = true;
  326.   
  327.   if (theVal)
  328.   {
  329.     if (parseInt(theVal) != theVal || theVal<0)
  330.     {
  331.       retVal = false;
  332.     }
  333.   }
  334.   
  335.   return retVal;
  336. }
  337.  
  338.  
  339. //--------------------------------------------------------------------
  340. // FUNCTION:
  341. //   createUniqueRepeatRegionName
  342. //
  343. // DESCRIPTION:
  344. //   This function returns a unique name for a new repeated region
  345. //
  346. // ARGUMENTS:
  347. //   none
  348. //
  349. // RETURNS:
  350. //   string - a unique name
  351. //--------------------------------------------------------------------
  352. function createUniqueRepeatedRegionName()
  353. {
  354.   //search the ssRecs for other names
  355.   var retVal = "";
  356.   
  357.   var ssRecs = dw.serverBehaviorInspector.getServerBehaviors();
  358.   
  359.   var num = 0;
  360.   var rrName = "";
  361.   
  362.   while (!retVal)
  363.   {
  364.     num++;
  365.     rrName = "Repeat" + num;
  366.     for (var i=0; i < ssRecs.length; i++) //search all ssRecs
  367.     {
  368.       var ssRec = ssRecs[i];
  369.       if (ssRec.parameters.loopName != null && 
  370.           ssRec.parameters.loopName.toLowerCase() == rrName.toLowerCase())
  371.       {
  372.         break;
  373.       }
  374.     }
  375.     if (i >= ssRecs.length)
  376.     {
  377.       retVal = rrName;
  378.     }
  379.   }
  380.   
  381.   return retVal;
  382. }
  383.  
  384.